An application program or system may include on-line and off-line components. Examples of application programs or systems include an enterprise application, such as a resource management system, a customer relationship management system, a human resources management system, a supply chain management system, and a financial management system.
An enterprise application may operate using a client/server architecture in which the client system performs the application processing functions and the server system performs the data management, synchronization, and messaging functions. Some enterprise applications include both on-line client systems and off-line client systems. Such an arrangement may be particularly beneficial when a mobile computing device is used with only intermittent access to a connection to the server. An off-line client system may be used, for example, by a sales representative or service technician while working at a customer location.
An on-line client, such as a desktop computer or a workstation, may use a version of an application program that receives data from a central data repository and updates the central data repository when a user of the on-line client is performing business processes. An off-line client, such as a laptop, a personal digital assistant, or another mobile computing device, may also be referred to as a mobile client. A mobile client may use a version of the application program that receives data from a user of the mobile client and updates data stored on the mobile client. Typically, a mobile client operates a single-user version of the application program. The mobile client may periodically synchronize the data stored on the mobile client with the data stored at the central data repository. A mobile client may use a network connection with the central data repository to communicate during synchronization.
When a new version of an application program is implemented, the server system, each mobile client, and each on-line client may need to be modified to use the new version (which may be referred to as upgrading the computing environment). Upgrading the mobile client may include installing, for example, an application program, the data associated with the application program, and the support software for the application program, such as a database management system or communication software. Upgrading all mobile clients may take a substantial period of time, during which the mobile clients may not be available. By contrast, upgrading an on-line client that uses a persistent network connection to the central repository may take a much shorter period of time because, for instance, the data management functions do not have to be modified at each on-line client. Upgrading the server system may include modifying a central data repository and adapting the modified central data repository for use by the mobile clients. Adapting the modified central data repository may take a substantial period of time when data sets or synchronization processes need to be modified for particular mobile clients or groups of mobile clients.
Minimizing the length of time that a particular mobile client is unavailable to a particular user (which may be referred to as downtime) may be desirable. Minimizing the length of downtime during an upgrade may be particularly advantageous when the time required to upgrade all mobile clients is substantial, such as when a large number of mobile clients need to be upgraded or when a central data repository needs to be adapted for particular mobile clients or groups of mobile clients. Minimizing the length of downtime also may be advantageous when the inability of a user to use a mobile client may result in a loss of revenue, such as when a sales representative uses a mobile client to enter or process sales orders placed by customers.
The upgrade process may be further complicated when a mobile client may connect for synchronization only to a version of the application server program that corresponds to a version used by the mobile client. For example, a mobile client that operates a new version (or target version) of the application may connect only with an application server that operates the new version, and a mobile client that operates the starting version (or original version) may connect only with an application server that operates the starting version).
One approach to upgrading an application program to another version may be to operate the two versions in parallel. The two application program versions may be operated on separate computer systems and clients connect to the appropriate computer system. In a distributed computing environment, the data from both versions may be sent to a centralized data repository.